#include <iostream>
#include <vector>
#include <functional>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>

void Sched()
{
    std::cout << "我是进程调度" << std::endl;
}
void MemManager()
{
    std::cout << "我是周期性的内存管理， 正在检查有没有内存问题" << std::endl;
}
void Fflush()
{
    std::cout << "我是刷新程序，我在定期刷新内存数据，到磁盘" << std::endl;
}

using func_t = std::function<void()>;
std::vector<func_t> funcs;

void handlerSig(int sig)
{
    std::cout << "##############################" << std::endl;
    for(auto f : funcs)
    {
        f();
    }
    std::cout << "##############################" << std::endl;
    int n = alarm(1);
}

int main()
{
    funcs.push_back(Sched);
    funcs.push_back(MemManager);
    funcs.push_back(Fflush);
    signal(SIGALRM, handlerSig);
    alarm(1); 

    while(1)
    {
        pause();
    }

    return 0;
}